SET SQL DIALECT 3;
SET NAMES WIN1252;

SET CLIENTLIB '<diretrio_do_banco>\fbclient.dll';

CREATE DATABASE '<diretrio_do_banco>\BIBLIOTECA.FDB'
USER 'SYSDBA' PASSWORD 'masterkey'
PAGE_SIZE 4096
DEFAULT CHARACTER SET WIN1252;

CREATE GENERATOR GEN_IDEDITORA;

CREATE GENERATOR GEN_IDLIVRO;

CREATE GENERATOR GEN_IDLIVRO_ITEM;

CREATE GENERATOR GEN_IDPESSOA;

CREATE GENERATOR GEN_IDEMPRESTIMO;

CREATE TABLE EDITORA
(
  IDEDITORA INTEGER NOT NULL,
  EDITORA VARCHAR(100) NOT NULL
);

CREATE TABLE LIVRO
(
  IDLIVRO INTEGER NOT NULL,
  IDEDITORA INTEGER NOT NULL,
  LIVRO VARCHAR(100) NOT NULL,
  QUANTIDADE INTEGER NOT NULL
);

CREATE TABLE LIVRO_ITEM
(
  IDLIVRO_ITEM INTEGER NOT NULL,
  IDLIVRO INTEGER NOT NULL,   
  ITEM INTEGER NOT NULL,
  STATUS CHAR(1) NOT NULL,
  DATA_ENTRADA DATE
);

CREATE TABLE PESSOA
(
  IDPESSOA INTEGER NOT NULL,
  PESSOA VARCHAR(100) NOT NULL,
  ENDERECO VARCHAR(100) NOT NULL,
  BAIRRO VARCHAR(100) NOT NULL,
  CIDADE VARCHAR(100) NOT NULL,
  ESTADO CHAR(2) NOT NULL,
  TELEFONE VARCHAR(11) NOT NULL
);

CREATE TABLE EMPRESTIMO 
(
  IDEMPRESTIMO INTEGER NOT NULL,
  IDPESSOA INTEGER NOT NULL,
  DATA_EMPRESTIMO DATE NOT NULL
);

CREATE TABLE EMPRESTIMO_ITEM
(
  IDEMPRESTIMO_ITEM INTEGER NOT NULL,
  IDEMPRESTIMO INTEGER NOT NULL,
  IDLIVRO_ITEM INTEGER NOT NULL,
  DATA_PREVISTA DATE NOT NULL,
  DATA_DEVOLUCAO DATE
);

ALTER TABLE EDITORA ADD CONSTRAINT PK_IDEDITORA
PRIMARY KEY(IDEDITORA) USING INDEX IDX_EDITORA;

ALTER TABLE LIVRO ADD CONSTRAINT PK_IDLIVRO
PRIMARY KEY(IDLIVRO) USING INDEX IDX_IDLIVRO;

ALTER TABLE LIVRO ADD CONSTRAINT FK_LIVRO_EDITORA
FOREIGN KEY(IDLIVRO) REFERENCES EDITORA
USING INDEX IDX_LIVRO_EDITORA;

ALTER TABLE LIVRO_ITEM ADD CONSTRAINT PK_IDLIVRO_ITEM
PRIMARY KEY(IDLIVRO_ITEM) USING INDEX IDX_IDLIVRO_ITEM;

ALTER TABLE LIVRO_ITEM ADD CONSTRAINT FK_LIVRO_LIVRO_ITEM
FOREIGN KEY(IDLIVRO) REFERENCES LIVRO
USING INDEX IDX_LIVRO_LIVRO_ITEM;

ALTER TABLE PESSOA ADD CONSTRAINT PK_IDPESSOA
PRIMARY KEY(IDPESSOA) USING INDEX IDX_IDPESSOA;

ALTER TABLE EMPRESTIMO ADD CONSTRAINT PK_IDEMPRESTIMO
PRIMARY KEY(IDEMPRESTIMO) USING INDEX IDX_IDEMPRESTIMO;

ALTER TABLE EMPRESTIMO ADD CONSTRAINT FK_EMPRESTIMO_PESSOA
FOREIGN KEY(IDPESSOA) REFERENCES PESSOA 
USING INDEX IDX_EMPRESTIMO_PESSOA;

ALTER TABLE EMPRESTIMO_ITEM ADD CONSTRAINT FK_EMPRESTIMO_EMP_ITEM
FOREIGN KEY(IDEMPRESTIMO) REFERENCES EMPRESTIMO
ON DELETE CASCADE
ON UPDATE CASCADE
USING INDEX IDX_EMPRESTIMO_EMP_ITEM;

ALTER TABLE EMPRESTIMO_ITEM ADD CONSTRAINT PK_EMPRESTIMO_ITEM
PRIMARY KEY(IDEMPRESTIMO_ITEM) USING INDEX IDX_EMPRESTIMO_ITEM;

ALTER TABLE EMPRESTIMO_ITEM ADD CONSTRAINT FK_EMPRESTIMO_LIVRO_ITEM
FOREIGN KEY(IDLIVRO_ITEM) REFERENCES LIVRO_ITEM
USING INDEX IDX_EMPRESTIMO_LIVRO_ITEM;
